Field of the Invention
The present invention relates to an information processing apparatus, an application management method, and a non-transitory computer-readable medium.
Description of the Related Art
In recent years, in the field of image forming apparatuses, operating environments, which are represented by a Java (registered trademark) environment, for applications (hereinafter referred to simply as “apps”) have been provided. A technique has been proposed of providing an extendable app using portability of a program that Java (registered trademark) has. In order to improve functions and usability of an image forming apparatus, an app that operates in an environment such as a Java (registered trademark) environment is generated and installed into the image forming apparatus, and a desired function can thereby be achieved by this app.
App platforms include an OSGi (Open Services Gateway Initiative) Service Platform, which is a Java (registered trademark) platform for embedded devices. The OSGi defines a bundle as a software module management unit, and defines specifications for managing a life cycle including installation, start, stop, update, and uninstallation. This kind of app platform can provide an app with an embedded function such as copying, scanning, and printing.
The OSGi has mechanisms called a host bundle and a fragment bundle. The fragment bundle is a bundle in a form in which the bundle does not independently operate and a bundle itself is added (attached) to a class loader space of a host bundle. When correcting or extending the app, a function of the host bundle is corrected or extended using the fragment bundle, and it is thereby possible to reduce the size of a file to be installed and efficiently distribute a module. On the other hand, the host bundle refers to a bundle that is a target to which the fragment bundle is added. Since the fragment bundle does not independently operate, it does not have a concept of start and stop either. Accordingly, the fragment bundle cannot be used in a manner that the bundle is installed but is not started until it is used, and the bundle is first started at the time of use, as in the case of the host bundle. Furthermore, the number of fragment bundles that can be installed for a host bundle is not particularly restricted in the specifications of the OSGi.
Here, there has been a demand that, as in the case of the host bundle, entities of a plurality of fragment bundles (for example, jar files) are held but a state of not being attached to the host bundle (hereinafter referred to as “temporary installation”) is maintained, and then, the fragment bundle is first set in a usable state at the time of use, i.e., a state of being attached (installed) to the host bundle. If this is achieved, a plurality of fragment bundles can be temporarily installed, and a fragment bundle to be used can be selected and installed as needed by a user. The amount of use of resources can also be suppressed until the fragment bundle is actually installed. However, the specifications of the OSGi do not include a function that meets this demand (problem 1).
Furthermore, there has been a demand to achieve a state in which the fragment bundles are temporarily installed in advance into the image forming apparatus, without the user installing the fragment bundles. A fragment bundle to be used will be able to be selected from among the fragment bundles installed in advance, and installed as needed by the user. However, the specifications of the OSGi do not include a function that meets this demand (problem 2).
Furthermore, the specifications of the OSGi do not include a mechanism for restricting the number of fragment bundles that can be added to one host bundle. For this reason, in the case where an app exists whose function is assumed to be extended by a fragment bundle and a trial version of this app is to be used by a user, the trial version cannot be differentiated from a regular version of the app by providing a certain restriction on the number of addable fragment bundles. Accordingly, when installing a temporarily installed fragment bundle in the host bundle, the number of installable fragment bundles cannot be restricted (problem 3).